package handlers

import (
	"github.com/golang/freetype"
	"github.com/golang/freetype/truetype"
	"image"
)

type WriteString struct {
	Word       string
	X          int
	Y          int
	Color      string
	Size       float64
	LineHeight int
	Font       *truetype.Font
}

func (w *WriteString) Process(img *image.RGBA) (*image.RGBA, error) {
	f := freetype.NewContext()
	// 设置分辨率
	f.SetDPI(72)
	// 设置字体
	f.SetFont(w.Font)
	// 设置尺寸
	f.SetFontSize(w.Size)
	// 设置画图区域
	f.SetClip(img.Bounds())
	// 设置画到的资源
	f.SetDst(img)
	// 设置颜色
	f.SetSrc(image.NewUniform(RGBAColor(w.Color)))
	// 设置开始坐标 (lineHeight-size) 就是开始的偏移点
	pt := freetype.Pt(w.X, w.Y-(w.LineHeight-int(w.Size)))

	_, err := f.DrawString(w.Word, pt)
	if err != nil {
		return img, err
	}

	return img, nil
}
